<script>
	const shopPlugin = require('./static/shopPlugin/api.js')
	import {
		mapMutations,
		mapActions
	} from 'vuex'
	export default {
		onLaunch: function(options) {
			const systemSetting = wx.getWindowInfo()
			const statusBarHeight = systemSetting.statusBarHeight += 44
			this.setNavbarHeight(statusBarHeight)
			shopPlugin.onLaunch(options)
		},
		onShow: function(options) {
			// #ifdef MP-WEIXIN
			shopPlugin.onShow(options)
			this.getParams(options);
			this.$store.dispatch('init/getInit');
			this.checkForUpdate();
			this.getSetting()
			uni.hideTabBar({
				success: () => {},
				fail: (ex) => {
					console.log(ex)
					// 捕获报错，防止没有tabbar页面调用后控制台报错
				}
			});
			// #endif
		},
		onHide: function() {
			shopPlugin.onHide()
		},
		methods: {
			...mapMutations('init', ['setNavbarHeight']),
			...mapActions('init', ['getQrCodeParams']),
			// 个性化推荐
			individualization() {
				if (uni.getStorageSync('individualization') === '') { // 未设置
					// 个性化推荐：开启
					uni.setStorageSync('individualization', true);
				}
			},
			/**
			 * 处理参数
			 */
			getParams(e) {
				// 扫描小程序码进入
				if (e.query.scene != undefined && e.query.scene) { // 扫描小程序码进入
					// 获取二维码携带的参数
					this.getQrCodeParams(e.query.scene)
				}
			},
			/**
			 * 小程序主动更新
			 */
			// 检测是否更新
			checkForUpdate() {
				const _this = this
				// 检查小程序是否有新版本发布
				const updateManager = uni.getUpdateManager();
				// 请求完新版本信息的回调
				updateManager.onCheckForUpdate((res) => {
					//检测到新版本，需要更新，给出提示
					if (res && res.hasUpdate) {
						_this.updateChange(updateManager)
					}
				});
			},
			async updateChange(updateManager) {
				try {
					const res = await this.$showModal('检测到新版本，是否下载新版本并重启小程序？', true, '更新提示');
					if (res.confirm) {
						this.downLoadAndUpdate(updateManager)
					} else {
						/* 用户点击了取消，再次弹框提醒 */
						console.log('用户点击了取消');
						const res = await this.$showModal('本次版本更新涉及到新的功能添加，旧版本无法正常访问的哦~', true, '温馨提示~',
							'确定更新', '取消更新');
						if (res.confirm) {
							//下载新版本，并重新应用
							this.downLoadAndUpdate(updateManager)
						}
					}
				} catch (error) {
					console.error('显示模态框失败:', error);
				}
			},
			// 下载小程序新版本并重启应用
			downLoadAndUpdate(updateManager) {
				const _this = this
				uni.showLoading({
					title: '小程序更新中'
				});
				// //静默下载更新小程序新版本
				updateManager.onUpdateReady((res) => {
					uni.hideLoading();
					//新的版本已经下载好，调用 applyUpdate 应用新版本并重启
					updateManager.applyUpdate()
				});
				// 更新失败
				updateManager.onUpdateFailed(async (res) => {
					// 新的版本下载失败
					uni.hideLoading();
					const result = await this.$showModal('新版本已经上线啦~，请您删除当前小程序，重新搜索打开哟~', false,
						'已经有新版本了哟');
				});
			},
			getSetting() {
				var _this = this
				uni.getSetting({
					withSubscriptions: true,
					success(res) {
						if (!res.subscriptionsSetting.mainSwitch) {
							_this.$store.commit('init/setSettings', true)
						}
					},
					fail(err) {
						console.log(err)
					}
				})
			},
		},
	}
</script>

<style lang="scss">
	/*每个页面公共css */
	@import '@/uni_modules/uview-ui/index.scss';
	@import '@/common/css/common.css';
	@import '@/common/css/flex.css';
	@import '@/uni.scss';
</style>